package Aula11;

public interface ServicosFibonacci {

    /**
     * @param termo
     * @return valor fibonacci termo
     */
    long fibonacciRecursivo(int termo);
    
    /**
     * @param termo
     * @return valor fibonacci termo
     */
    long fibonacciProgDinamica(int termo);
    
    /**
     * @param termo
     * @return valor fibonacci termo
     */
    long fibonacciIterativo(int termo);
    
    
    /**
     * @return tempo em nanossegundos da ultima execucao; -1 se nao tiver execucao anterior
     */
    long ultimoFibRecursivo();
    
    /**
     * @return tempo em nanossegundos da ultima execucao; -1 se nao tiver execucao anterior
     */
    long ultimoFibDinamica();
    
    /**
     * @return tempo em nanossegundos da ultima execucao; -1 se nao tiver execucao anterior
     */
    long ultimoFibIterativo();
    
    /**
     * @param termo
     * @return fib do termo armazenado no memo; -1 senao tiver ainda
     */
    long inspecionaMemo(int termo); 
}
